sequencePtns is package{
  -- test out the use of <lbl> of {<el> ; .. ; <el>} patterns
  
  find(sequence of {},_) is false;
  find(sequence of {X;..Y},X) is true;
  find(sequence of {_;..Y},X) is find(Y,X);
  
  atEnd(sequence of {},_) is false;
  atEnd(sequence of {X},X) is true;
  atEnd(sequence of {_;..Y},X) is atEnd(Y,X);
  
  L is cons of {"alpha"; "beta"; "gamma" };
  
  walk(sequence of {X;..Y}) do
    {
      logMsg(info,"got $X");
      walk(Y);
    }
  walk(sequence of {}) do {};
  
  main() do {
    assert find(L,"alpha");
    assert find(L,"beta");
    assert find(L,"gamma");
    
    assert not find(L,"one");
    
    assert atEnd(L,"gamma");
    assert not atEnd(L,"alpha");
    assert not atEnd(L,"beta");
    assert not atEnd(L,"one");
    
    walk(L);
  }
}